Word processing and spreadsheet programs are two well-known and widely used software applications. Word processing programs permit users to draft letters, write books, and create other word-centric documents on a computer. Word processing programs are typically designed with the author in mind by offering tools and user interfaces that make writing easier, such as edit functions (e.g., cut, copy, paste, find, replace, etc.), spell and grammar checking, document formatting, and the like. Examples of word processing programs include “Word™” from Microsoft Corporation and “WordPerfect™” from Corel Corporation.
Spreadsheet programs enable users to create financial records, accounting spreadsheets, budgets, and other number-centric documents on a computer. Spreadsheet programs are developed with the accountant in mind, focusing on tools and user interfaces that simplify data entry and data manipulation. Spreadsheets typically offer such functionality as in-cell formulas, automatic recalculation as data changes, multi-sheet referencing, cell formatting according to data type (e.g., dates, currency, percentages, etc.), and the like. One example of a spreadsheet program is the “Excel™” application from Microsoft Corporation.
In the beginning, spreadsheets and word processing texts were entirely separate from one another. There was essentially no integration. Computer users who wanted to create primarily word-based documents would select a word processing program, while users who wished to produce number-oriented documents turned to spreadsheet programs. Over time, however, word processing users expressed interest in incorporating numbers and a spreadsheet “look” into an otherwise word-dominated document.
To accommodate such crossover situations, word processing programs evolved to offer tables, a visual structure that could be used to hold and organize numbers and other types of data. Tables arrange data in columns and rows, thereby emulating the spreadsheet “look”. Word processing users can insert a table, modify its layout, and change cell formats to achieve a specific visual appearance to their data. Some tables even support rudimentary functions, such as adding a set of contiguous cells.
While visually similar to spreadsheets, word processing tables do not support full spreadsheet functionality. For instance, a user is not able to insert functions into a table that automatically update anytime data is modified in the cells.
More recently, object-oriented programming and OLE technologies have been used to provide a richer integration experience. With OLE, word processing users who want greater functionality can embed spreadsheet objects into their word processing documents, instead of tables. Essentially, this is akin to embedding an “Excel™” spreadsheet (or other spreadsheet program) into a document running on the “Word™” program (or other word processing program). The embedded object carries sufficient functionality to allow the user to enter formulas, format cells, recalculate functions, and do all of the things he/she would normally be able to do on a spreadsheet program.
Though the embedded spreadsheet visually resembles a table and provides the desired spreadsheet functionality, it logistically remains a separate program that must be invoked by the user. OLE requires that both types of application programs—a word processor and a spreadsheet—be installed on the computer. When the user wants to update the embedded spreadsheet, the user invokes the spreadsheet object by moving a mouse pointer to anywhere on the embedded object and double clicking the left mouse button (or via some other actuation mechanism). In response, an instance of the spreadsheet program is executed and the spreadsheet changes appearance from a “table look” to a reduced size spreadsheet program with numbered rows and lettered columns and program specific menus. In this state, the user can change functions, modify data, reformat the spreadsheet, and perform other spreadsheet tasks. When the user is finished, the user returns focus to the word processing document by moving the mouse pointer outside the spreadsheet object and single clicking the left mouse button.
While the OLE approach offers the full spreadsheet functionality within a word processing document, the process is somewhat sophisticated and typically performed by experienced users who are familiar with both spreadsheets and word processing programs. For novice or less experienced users, it may be confusing to see a table and not appreciate the difference between a word processing table and a full-functioning embedded spreadsheet object. From the user standpoint, different operations are used depending upon whether the visible structure is a table or a spreadsheet. Furthermore, common services such as text formatting, spell checking, and the like do not “tunnel” into the embedded OLE objects and thus, the user is forced to run such services for both the document and the embedded spreadsheet.
Thus, even though the final appearance may be visually similar, word processing tables and spreadsheets provide two completely separate mechanisms for displaying information.
A separate, but somewhat related problem, is that spreadsheet functionality has been traditionally limited to a grid. There has been no integration of spreadsheet capabilities into word processing text. When writing a document containing both text and a spreadsheet, all data and formulas are typically contained within the spreadsheet of the document. The text then references the values and formula results in the spreadsheet through sentences like, “The total cost of the project is identified in Table 1”.
If the user actually wants to place a value or formula result in the text, the user manually enters the values directly into the text. For example, the user might write, “The total cost of the project is $2,300, as identified in Table 1.” Unfortunately, the value (e.g., $2,300) is static text. If the user subsequently changes a value in the spreadsheet, thereby altering the total cost, the sentence remains unchanged. The user must remember the sentence and update it manually.
Some word processing programs (e.g., Microsoft Word™) allow insertion of “fields” into text. Using fields, a user may enter dates, simple equations, and the like. However, these fields are independent structures that do not recalculate automatically as one would expect for rudimentary spreadsheet functionality. Moreover, these fields tend to be difficult to edit.
Accordingly, there is a need to better integrate spreadsheet functionality into text.
With the rapidly growing popularity of the Internet, many documents delivered to and rendered on computers are written in markup languages, such as HTML (hypertext markup language). Markup languages can allow authors to easily construct a desired visual layout of the document. Some HTML documents provide tables that look and function as if they were integrated with the surrounding text. For instance, financial Websites commonly offer informative discussions on retirement planning, college savings, or buying a house and include with those discussions one or more tables that invite the user to fill in their personal financial information and goals. When the user finishes entering the data fields, the document appears to make on-the-fly calculations and present the results together with the discussions.
Despite the appearance of in-document calculations, the HTML document is nothing more than an electronic form that receives data entered by the user. When the user completes entry, the HTML document is submitted to a Web server that extracts the user data and makes the appropriate financial calculations. The server places the results in another HTML document and serves the document back to the user's computer. The submit and reply occur very quickly, so the user may be unaware that the HTML document holding the results is different than the HTML document into which he/she initially entered data. In any event, the traditional separation between spreadsheets and text/tables has persisted into the Web-based era.